/**
 * 一般的GET请求，无参数
 * @param {String} url 请求地址
 * @param {Function} funSuccess 请求成功的回调
 * @param {() => void} [funComplete=()=>{}] 请求结束的回调，默认值为空 如果需要才传一个回调函数   
 */

function get(url, funSuccess, funComplete = () => {}) {
	uni.request({
		url,
		method: 'GET',
		header: {
			"content-type": "application/json;charset=UTF-8"
		},
		sslVerify: false,
		success: res => {
			funSuccess(res)
		},
		fail: err => {
			console.log(err);
		},
		complete: () => {
			funComplete()
		}
	});
}
/**
 * 一般的GET请求，无参数
 * @param {String} url 请求地址
 * @param {JSON} header 请求头，包含参数 
 * @param {Function} funSuccess 请求成功的回调
 * @param {() => void} [funComplete=()=>{}] 请求结束的回调，默认值为空 如果需要才传一个回调函数   
 */
function getWithParams(url, header, funSuccess, funComplete = () => {}) {
	uni.request({
		url: url,
		method: 'GET',
		header: header,
		sslVerify: false,
		success: res => {
			funSuccess(res)
		},
		fail: err => {
			console.log(err);
		},
		complete: () => {
			funComplete()
		}
	});
}
/**
 * 一般的GET请求，无参数
 * @param {String} url 请求地址
 * @param {JSON} data 请求头，包含参数 
 * @param {Function} funSuccess 请求成功的回调
 * @param {() => void} [funComplete=()=>{}] 请求结束的回调，默认值为空 如果需要才传一个回调函数   
 */
function postQuery(url, data, funSuccess, funComplete = () => {}) {
	uni.request({
		url,
		header: {
			"content-type": "application/x-www-form-urlencoded;charset=UTF-8"
		},
		method: 'POST',
		data: data,
		success: res => {
			funSuccess(res)
		},
		fail: () => {
			console.log(err);
		},
		complete: () => {
			funComplete()
		}
	});
}

/**
 * 一般的GET请求，无参数
 * @param {String} url 请求地址
 * @param {JSON} data 请求头，包含参数 
 * @param {Function} funSuccess 请求成功的回调
 * @param {() => void} [funComplete=()=>{}] 请求结束的回调，默认值为空 如果需要才传一个回调函数   
 */
function post(url, data, funSuccess, funComplete = () => {}) {
	uni.request({
		url: url,
		method: 'post',
		data: {},
		header: {
			"content-type": "application/json;charset=UTF-8"
		},
		data: data,
		success: res => {
			funSuccess(res)
		},
		fail: err => {
			console.log(err);
		},
		complete: () => {
			funComplete()
		}
	});
}

/**
 * 一般的GET请求，无参数
 * @param {String} url 请求地址
 * @param {String} name 文件上传的名称，默认file
 * @param {String} filePath 上传的本地文件路径，一般由chooseImage 
 * @param {JSON} data 提交到服务器的参数，其他表单数据如用户名，密码
 * @param {Function} funSuccess 请求成功的回调
 */
function postFile(url, name, filePath, data, funSuccess, funComplete = () => {}) {
	uni.uploadFile({
		url,
		filePath,
		name,
		formData: data,
		success: res => {
			funSuccess(res)
		},
		fail: err => {
			console.log(err);
		},
		complete: () => {
			funComplete()
		}
	})
}

//同步实现异步请求，在嵌套请求时
function request(url, data = {}, method = 'GET') {
  return new Promise((resolve, reject) => { 
    uni.request({
      url: url,
      method: method,
      data: data,
      success: res=> {
        resolve(res.data);
      },
      fail: err => {
        reject(err);
      },
      complete: () => {}
    });
  });
}
module.exports = {
	get,
	getWithParams,
	postQuery,
	post,
	postFile,
	request
}